/**
 * @param {number[][]} obstacleGrid
 * @return {number}
 */
 var uniquePathsWithObstacles = function(obstacleGrid) {
    if(obstacleGrid.length===0){
        return 0;
    }
    let h=obstacleGrid.length,w=obstacleGrid[0].length;
    let old=new Array(w).fill(0);
    for(let i=0;i<w;i++){
        if(obstacleGrid[0][i]===1){
            break;
        }
        old[i]=1;
    }
    let newDP=null;
    for(let i=1;i<h;i++){
        newDP=new Array(w).fill(0);
        for(let j=0;j<w;j++){
            if(obstacleGrid[i][j]===0){
                newDP[j]+= i-1>=0 ? old[j]:0;
                newDP[j]+= j-1>=0 ? newDP[j-1]:0; 
            }
        }
        old=newDP;
    }
    return old[w-1];
};


// 执行用时：
// 76 ms
// , 在所有 JavaScript 提交中击败了
// 97.75%
// 的用户
// 内存消耗：
// 38.3 MB
// , 在所有 JavaScript 提交中击败了
// 85.62%
// 的用户